package com.cy.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @FeignClient(value = "sca-provider")  用于描述接口时，用于告诉spring要为此接口创建实现类
 * value = "sca-provider"  value的值为：你要调用的服务名
 */
@FeignClient(value = "sca-provider")
public interface RemoteProviderService {

    /**
     * @GetMapping("/provider/echo/{msg}") 里面的地址与 要调用的ScaProviderApplication
     * 里面的某一个方法上面定义的地址是一样的
     * @param msg
     * @return
     */
    @GetMapping("/provider/echo/{msg}")
    /*
     * @PathVariable("msg") Feign接口中需要在@PathVariable("msg")后面加上地址中的传参的变量名
     * 没有加改变量名会出现：
     *  Caused by: java.lang.IllegalStateException: PathVariable annotation was empty on param 0.的报错
     *  原因在jdk8之前 时拿不到一个方法中变量的名字的，jdk8之后可以拿到需要升级
     */
    String doEcho(@PathVariable("msg") String msg); //@FeignClient描述的接口底层会为其创建实现类。
}
